package rlog

import (
	"fmt"
	"path"
	"runtime"
	"sync/atomic"
	"time"
)

var projectDir = ""
var projectDirLength = 0
var waitWriteLogCount int64

// Init 初始化，需要在 main函数或者main.init里调用。
// 用于计算出项目文件夹地址。
func Init() {
	_, file, _, ok := runtime.Caller(1)
	if ok {
		projectDir = path.Dir(file)
		projectDirLength = len(path.Dir(file)) + 1
	}
}

// ProjectDir 返回项目main函数的文件夹地址
func ProjectDir() string {
	return projectDir
}

// WaitFinish 安全结束日志打印
func WaitFinish() {
	timer := time.NewTimer(time.Second * 10)
	for {
		select {
		case <-timer.C:
			return
		default:
			if atomic.LoadInt64(&waitWriteLogCount) <= 0 {
				fmt.Println("\r\n安全结束日志打印：", time.Now())
				return
			}
		}
		time.Sleep(time.Millisecond * 10)
	}
}
